package scut.facerecognition.service;

import scut.facerecognition.entity.dto.PageResult;
import scut.facerecognition.entity.dto.PostDTO;
import scut.facerecognition.entity.pojo.Post;

/**
 * 帖子服务接口
 */
public interface PostService {
    
    /**
     * 分页获取帖子列表
     * @param page 页码
     * @param size 每页数量
     * @param sort 排序方式：1-最热(点赞)，2-最新(时间)
     * @param userId 当前用户ID，用于判断是否点赞
     * @return 帖子分页数据
     */
    PageResult<PostDTO> getPostList(int page, int size, int sort, Long userId);
    
    /**
     * 获取帖子详情
     * @param id 帖子ID
     * @param userId 当前用户ID，用于判断是否点赞
     * @return 帖子详情
     */
    PostDTO getPostDetail(Long id, Long userId);
    
    /**
     * 发布帖子
     * @param post 帖子实体
     * @return 新帖子ID
     */
    Long createPost(Post post);
    
    /**
     * 更新帖子
     * @param post 帖子实体
     * @return 是否成功
     */
    boolean updatePost(Post post);
    
    /**
     * 删除帖子（逻辑删除）
     * @param id 帖子ID
     * @param userId 当前用户ID，验证权限
     * @return 是否成功
     */
    boolean deletePost(Long id, Long userId);
    
    /**
     * 点赞/取消点赞帖子
     * @param postId 帖子ID
     * @param userId 用户ID
     * @return 包含点赞状态和点赞数的数组：[是否点赞, 点赞总数]
     */
    Object[] togglePostLike(Long postId, Long userId);
}
